bitkeeper revision 1.1159.53.27 (4134d3b2RKqSKYYMoQoESXU2EtGiiQ)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Tue, 31 Aug 2004 19:38:26 +0000 (19:38 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Tue, 31 Aug 2004 19:38:26 +0000 (19:38 +0000)
Build fixes and move set_current() earlier in boot (Charles Coffing).

xen/arch/x86/memory.c
xen/common/kernel.c
xen/include/xen/spinlock.h

index f6a56577986c9252096140d41f871db347010140..3dfa8b3460e29f92228e02ed67c9a01f153715fe 100644 (file)
@@ -1042,7 +1042,7 @@ static int do_extended_command(unsigned long ptr, unsigned long val)
         if ( unlikely(e->tot_pages == e->max_pages) ||
              unlikely(!gnttab_prepare_for_transfer(e, d, gntref)) )
         {
-            MEM_LOG("Transferee has no reservation headroom (%ld,%ld), or "
+            MEM_LOG("Transferee has no reservation headroom (%d,%d), or "
                     "provided a bad grant ref.\n", e->tot_pages, e->max_pages);
             spin_unlock(&e->page_alloc_lock);
             put_domain(e);
@@ -1731,7 +1731,7 @@ static void ptwr_init_backpointers(void)
         page = &frame_table[pde >> PAGE_SHIFT];
         /* assert that page is an l1_page_table   XXXcl maybe l2? */
         if ( (page->u.inuse.type_info & PGT_type_mask) != PGT_l1_page_table ) {
-           MEM_LOG("ptwr: Inconsistent pagetable: pde %x is not an l1 page\n",
+           MEM_LOG("ptwr: Inconsistent pagetable: pde %lx not an l1 page\n",
                    pde >> PAGE_SHIFT);
            domain_crash();
        }
index 2c67cf7506b32c71f448f9ca0f75092d5890bc08..9b2a3cd70ce11bc2147f93048e42d0720f119621 100644 (file)
@@ -183,6 +183,9 @@ void cmain(multiboot_info_t *mbi)
         }
     }
 
+    /* Must do this early -- e.g., spinlocks rely on get_current(). */
+    set_current(&idle0_task);
+
     /* We initialise the serial devices very early so we can get debugging. */
     serial_init_stage1();
 
@@ -218,8 +221,6 @@ void cmain(multiboot_info_t *mbi)
         for ( ; ; ) ;
     }
 
-    set_current(&idle0_task);
-
     xenheap_phys_end = opt_xenheap_megabytes << 20;
 
     max_mem = max_page = (mbi->mem_upper+1024) >> (PAGE_SHIFT - 10);
@@ -401,20 +402,14 @@ static int crit_count[NR_CPUS], crit_checking_disabled[NR_CPUS];
 void disable_criticalregion_checking(void)
 {
     int cpu = smp_processor_id();
-    ASSERT(crit_checking_disabled[cpu] >= 0);
     crit_checking_disabled[cpu]++;
 }
 
-void enable_criticalregion_checking(void)
-{
-    int cpu = smp_processor_id();
-    crit_checking_disabled[cpu]--;
-    ASSERT(crit_checking_disabled[cpu] >= 0);
-}
-
 void criticalregion_enter(void)
 {
     int cpu = smp_processor_id();
+    if ( crit_checking_disabled[cpu] )
+        return;
     ASSERT(crit_count[cpu] >= 0);
     crit_count[cpu]++;
 }
@@ -422,6 +417,8 @@ void criticalregion_enter(void)
 void criticalregion_exit(void)
 {
     int cpu = smp_processor_id();
+    if ( crit_checking_disabled[cpu] )
+        return;
     crit_count[cpu]--;
     ASSERT(crit_count[cpu] >= 0);
 }
index fc2409f13d93448f30f855a9a255ba2369ffad18..8998c2989407f8947980f8c46d4fd913284b5307 100644 (file)
@@ -78,7 +78,6 @@ extern void criticalregion_enter(void);
 extern void criticalregion_exit(void);
 extern void ASSERT_no_criticalregion(void);
 extern void disable_criticalregion_checking(void);
-extern void enable_criticalregion_checking(void);
 
 #define spin_lock(_lock) \
     do { criticalregion_enter(); _raw_spin_lock(_lock); } while (0)
@@ -112,7 +111,6 @@ static inline int spin_trylock(spinlock_t *lock)
 
 #define ASSERT_no_criticalregion()        ((void)0)
 #define disable_criticalregion_checking() ((void)0)
-#define enable_criticalregion_checking()  ((void)0)
 
 #define spin_lock(_lock)             _raw_spin_lock(_lock)
 #define spin_trylock(_lock)          _raw_spin_trylock(_lock)